﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using radnaVerzija.Interfejsi;
using MySql.Data.MySqlClient;

namespace radnaVerzija
{
    public partial class DAL
    {
        public class AktivnostDAO : IDaoCrud<Aktivnost>
        {
            protected MySqlCommand komanda;

            public long create(Aktivnost entitet)
            {
                try
                {
                    komanda = new MySqlCommand("insert into Aktivnosti values (@brojClanova, @maxBrojClanova,@cijena,ToDate(@danUSedmici, DAY),@tipAktivnosti,@idTrener);", konekcija);
                    komanda.Parameters.AddWithValue("@brojClanova", entitet.BrojClanova);
                    komanda.Parameters.AddWithValue("@maxBrojClanova", entitet.MaxBrojClanova);
                    komanda.Parameters.AddWithValue("@cijena", entitet.Cijena);
                    komanda.Parameters.AddWithValue("@danUSedmici", entitet.DanUSedmici);
                    komanda.Parameters.AddWithValue("@tipAktivnosti", entitet.TipAktivnosti);
                    komanda.Parameters.AddWithValue("@idTrener", entitet.Trener);
                      
                    komanda.ExecuteNonQuery();
                    return komanda.LastInsertedId;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            public Aktivnost read(Aktivnost entitet)
            {
                try
                {
                    komanda = new MySqlCommand("select * from Aktivnosti where idAktivnosti = @id;", konekcija);
                    komanda.Parameters.AddWithValue("@id", entitet.IdAktivnosti);
                    MySqlDataReader citac = komanda.ExecuteReader();
                    Aktivnost aktivnost = null;
                    citac.Read();
                    aktivnost = new Aktivnost(citac.GetInt32("brojClanova"), 
                     citac.GetInt32("cijena"),
                     citac.GetDateTime("danUSedmici"),
                     citac.GetInt32("maxBrojClanova"),
                     citac.GetInt32("tipAktivnosti"),
                     citac.GetInt32("idTrener"));
                    citac.Close();
                        return aktivnost;
                   

                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            public Aktivnost update(Aktivnost entitet)
            {
                try
                {
                    komanda = new MySqlCommand("update Aktivnosti set brojClanova=@brojClanova, maxBrojClanova=@maxBrojClanova,cijena=@cijena,danUSedmici=ToDate(@danUSedmici, DAY),tipAktivnosti=@tipAktivnosti,idTrener=@idTrener where idAktivnosti = @id;", konekcija);
                    komanda.Parameters.AddWithValue("@brojClanova", entitet.BrojClanova);
                    komanda.Parameters.AddWithValue("@maxBrojClanova", entitet.MaxBrojClanova);
                    komanda.Parameters.AddWithValue("@cijena", entitet.Cijena);
                    komanda.Parameters.AddWithValue("@danUSedmici", entitet.DanUSedmici);
                    komanda.Parameters.AddWithValue("@tipAktivnosti", entitet.TipAktivnosti);
                    komanda.Parameters.AddWithValue("@idTrener", entitet.Trener);
                    komanda.Parameters.AddWithValue("@id", entitet.IdAktivnosti);

                    komanda.ExecuteNonQuery();
                    
                    return read(entitet);
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }

            public void delete(Aktivnost entitet)
            {
                try
                {
                    komanda = new MySqlCommand("delete from Aktivnosti where idAktivnosti = @id", konekcija);
                    komanda.Parameters.AddWithValue("@id", entitet.IdAktivnosti);
                    komanda.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }
    }
}
